-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add new benchmark for FutureGroup
#179
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks so much for submitting this! - Despite not doing the best in these benchmarks yet, I think they're valuable because they allow us to learn where we have an opportunity to improve.
In principle I'm keen to land these; I mainly just have some concerns about the relatively high amount of outliers at the higher counts. If we can resolve that, I think we should be good!
Thank you!
benches/bench.rs
Outdated
while !senders.is_empty() { | ||
let completion_limit = max_ready_num_per_poll.min(senders.len()); | ||
let num_completing = rng.gen_range(0..=completion_limit); | ||
|
||
assert_eq!(senders.drain(..num_completing).count(), num_completing); | ||
|
||
let recv_start = Instant::now(); | ||
assert_eq!( | ||
(&mut group).take(num_completing).count().await, | ||
num_completing | ||
); | ||
total_runtime += recv_start.elapsed(); | ||
} | ||
} | ||
|
||
total_runtime |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It took me a second to read how this works; it would be really helpful if you can annotate how the latency is being counted here.
From what I can tell, what we're doing is taking N rounds to complete all futures in the group. We count how long it took to complete each round, and add that to a total duration. The way we mark futures as complete is by inserting one-shot channels into the futures group.
Did I get that right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We initialize the FutureGroup
with size
futures. Our futures are the Receiver
ends of oneshots. When the Sender
ends are dropped, the corresponding Receiver
futures become ready.
I think that last part may be what you're missing? When we drain the senders
vec at line 155 we are waking up Receiver
s in the FutureGroup
.
Insertion to the FutureGroup
happens once up front and is not used for signaling.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will get some more comments in there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yoshuawuyts let me know if the new docs make this more clear
@soooch By the way, I'd also be interested if you have any theories as to what might be causing this difference in latency? I know for example that in #137 we started dropping futures before we return their values, as a matter of correctness. I don't know whether @soooch Also another question: it seems right now the test is hard-coded to taking 10 rounds. Have you noticed any differences if you increase or decrease the number of rounds? |
my primary theory is that for each poll, all futures are iterated over regardless of whether they have been woken or not. iirc FuturesUnordered does some more complicated stuff there so it only iterates on woken futures. i think i saw an old PR on this repo that was trying to do something similar. i did try out a few other numbers. FutureGroup was always significantly slower than FuturesUnordered, but I think the difference may have been less for higher ratios. (i thought about parameterizing the benches over both size and "wake_limit", but the benches probably already take too long to run). |
Hmmm, thank you for your answer - though that shouldn't be the case. We're being quite careful to only iterate over futures which are currently ready to be woken. We do iterate over all active keys, but that just walks a futures-concurrency/src/future/future_group.rs Lines 363 to 364 in dec5ce0
I'm quite surprised about the differences measured here; especially since on the existing benchmark we also measure time elapsed and the differences are effectively negligable. I'm hoping that by better understanding the way this benchmark is structured we can drill down further into why it performs differently for both APIs. |
The Take a look at the |
I think I've confirmed this theory to myself. This change brings This should still be more algorithmically complex than This performance could definitely be be achieved without depending on bitvec. This is more of a proof of concept. |
ec9e058
to
501689c
Compare
reimplement `FutureGroup::from_iter` in terms of `extend`
Removes restriction that `F: Default`
43d6812
to
fa7c029
Compare
this benchmark aims to measure latency between futures becoming ready and the stream producing them.
fa7c029
to
d960f75
Compare
So it appears that on my machine, I have a significant number of outliers for nearly every bench included in this crate. This new benchmark is about on par with the rest. If you have a more steady bench machine, would you be able to check that this bench is reasonably stable there? |
@yoshuawuyts this may have fallen through the cracks. I believe I've addressed your initial concerns. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops - it indeed did. Thanks again!
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@apollo/client](https://www.apollographql.com/docs/react/) ([source](https://togithub.com/apollographql/apollo-client)) | [`3.10.4` -> `3.10.5`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.10.4/3.10.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fclient/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fclient/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fclient/3.10.4/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fclient/3.10.4/3.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@types/bun](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/bun) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/bun)) | [`1.1.3` -> `1.1.4`](https://renovatebot.com/diffs/npm/@types%2fbun/1.1.3/1.1.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fbun/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fbun/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fbun/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fbun/1.1.3/1.1.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [async-compression](https://togithub.com/Nullus157/async-compression) | `0.4.10` -> `0.4.11` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-compression/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-compression/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-compression/0.4.10/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-compression/0.4.10/0.4.11?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [async-graphql](https://togithub.com/async-graphql/async-graphql) | `7.0.5` -> `7.0.6` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [async-graphql-axum](https://togithub.com/async-graphql/async-graphql) | `7.0.5` -> `7.0.6` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-axum/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-axum/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-axum/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-axum/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [async-graphql-parser](https://togithub.com/async-graphql/async-graphql) | `7.0.5` -> `7.0.6` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-parser/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-parser/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-parser/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-parser/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [async-graphql-value](https://togithub.com/async-graphql/async-graphql) | `7.0.5` -> `7.0.6` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-graphql-value/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-graphql-value/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-graphql-value/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-graphql-value/7.0.5/7.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [async-lock](https://togithub.com/smol-rs/async-lock) | `3.3.0` -> `3.4.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-lock/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-lock/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-lock/3.3.0/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-lock/3.3.0/3.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [async-tungstenite](https://togithub.com/sdroege/async-tungstenite) | `0.26.0` -> `0.26.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [async-tungstenite](https://togithub.com/sdroege/async-tungstenite) | `0.26.0` -> `0.26.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/async-tungstenite/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/async-tungstenite/0.26.0/0.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dev-dependencies | patch | | [backtrace](https://togithub.com/rust-lang/backtrace-rs) | `0.3.71` -> `0.3.73` | [![age](https://developer.mend.io/api/mc/badges/age/crate/backtrace/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/backtrace/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/backtrace/0.3.71/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/backtrace/0.3.71/0.3.73?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [bun](https://bun.sh) ([source](https://togithub.com/oven-sh/bun)) | [`1.1.12` -> `1.1.13`](https://renovatebot.com/diffs/npm/bun/1.1.12/1.1.13) | [![age](https://developer.mend.io/api/mc/badges/age/npm/bun/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/bun/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/bun/1.1.12/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/bun/1.1.12/1.1.13?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [clap](https://togithub.com/clap-rs/clap) | `4.5.4` -> `4.5.7` | [![age](https://developer.mend.io/api/mc/badges/age/crate/clap/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/clap/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/clap/4.5.4/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/clap/4.5.4/4.5.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [clap_complete](https://togithub.com/clap-rs/clap) | `4.5.2` -> `4.5.5` | [![age](https://developer.mend.io/api/mc/badges/age/crate/clap_complete/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/clap_complete/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/clap_complete/4.5.2/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/clap_complete/4.5.2/4.5.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [cynic](https://cynic-rs.dev) ([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cynic/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [cynic-codegen](https://cynic-rs.dev) ([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-codegen/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-codegen/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-codegen/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-codegen/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | build-dependencies | patch | | [cynic-introspection](https://cynic-rs.dev) ([source](https://togithub.com/obmarg/cynic)) | `3.7.2` -> `3.7.3` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-introspection/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-introspection/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-introspection/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-introspection/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [cynic-parser](https://docs.rs/cynic-parser) ([source](https://togithub.com/obmarg/cynic)) | `0.4.3` -> `0.4.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [cynic-parser](https://docs.rs/cynic-parser) ([source](https://togithub.com/obmarg/cynic)) | `0.4.3` -> `0.4.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/cynic-parser/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/cynic-parser/0.4.3/0.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [eslint-config-next](https://nextjs.org/docs/app/building-your-application/configuring/eslint#eslint-config) ([source](https://togithub.com/vercel/next.js/tree/HEAD/packages/eslint-config-next)) | [`14.2.3` -> `14.2.4`](https://renovatebot.com/diffs/npm/eslint-config-next/14.2.3/14.2.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-config-next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-config-next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [futures-concurrency](https://togithub.com/yoshuawuyts/futures-concurrency) | `7.6.0` -> `7.6.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/futures-concurrency/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/futures-concurrency/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/futures-concurrency/7.6.0/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/futures-concurrency/7.6.0/7.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [graphql](https://togithub.com/graphql/graphql-js) | [`16.8.1` -> `16.8.2`](https://renovatebot.com/diffs/npm/graphql/16.8.1/16.8.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [graphql](https://togithub.com/graphql/graphql-js) | [`16.8.1` -> `16.8.2`](https://renovatebot.com/diffs/npm/graphql/16.8.1/16.8.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql/16.8.1/16.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [hyper-util](https://hyper.rs) ([source](https://togithub.com/hyperium/hyper-util)) | `0.1.4` -> `0.1.5` | [![age](https://developer.mend.io/api/mc/badges/age/crate/hyper-util/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/hyper-util/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/hyper-util/0.1.4/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/hyper-util/0.1.4/0.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [lambda_http](https://togithub.com/awslabs/aws-lambda-rust-runtime) | `0.11.1` -> `0.11.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/lambda_http/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/lambda_http/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/lambda_http/0.11.1/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/lambda_http/0.11.1/0.11.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [next](https://nextjs.org) ([source](https://togithub.com/vercel/next.js)) | [`14.2.3` -> `14.2.4`](https://renovatebot.com/diffs/npm/next/14.2.3/14.2.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/next/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/next/14.2.3/14.2.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [openidconnect](https://togithub.com/ramosbugs/openidconnect-rs) | `4.0.0-alpha.1` -> `4.0.0-alpha.2` | [![age](https://developer.mend.io/api/mc/badges/age/crate/openidconnect/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/openidconnect/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/openidconnect/4.0.0-alpha.1/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/openidconnect/4.0.0-alpha.1/4.0.0-alpha.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [opentelemetry](https://togithub.com/open-telemetry/opentelemetry-rust) | `0.22` -> `0.23` | [![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry/0.22.0/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry/0.22.0/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [opentelemetry-otlp](https://togithub.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-otlp) ([source](https://togithub.com/open-telemetry/opentelemetry-rust/tree/HEAD/opentelemetry-otlp)) | `0.15` -> `0.16` | [![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry-otlp/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry-otlp/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry-otlp/0.15.0/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry-otlp/0.15.0/0.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [opentelemetry-stdout](https://togithub.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-stdout) ([source](https://togithub.com/open-telemetry/opentelemetry-rust/tree/HEAD/opentelemetry-stdout)) | `0.3` -> `0.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry-stdout/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry-stdout/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry-stdout/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry-stdout/0.3.0/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [opentelemetry_sdk](https://togithub.com/open-telemetry/opentelemetry-rust) | `0.22.0` -> `0.23.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/opentelemetry_sdk/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/opentelemetry_sdk/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/opentelemetry_sdk/0.22.1/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/opentelemetry_sdk/0.22.1/0.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | `1.0.84` -> `1.0.85` | [![age](https://developer.mend.io/api/mc/badges/age/crate/proc-macro2/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/proc-macro2/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/proc-macro2/1.0.84/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/proc-macro2/1.0.84/1.0.85?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [regex](https://togithub.com/rust-lang/regex) | `1.10.4` -> `1.10.5` | [![age](https://developer.mend.io/api/mc/badges/age/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dev-dependencies | patch | | [regex](https://togithub.com/rust-lang/regex) | `1.10.4` -> `1.10.5` | [![age](https://developer.mend.io/api/mc/badges/age/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/regex/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/regex/1.10.4/1.10.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [rustls](https://togithub.com/rustls/rustls) | `0.23.8` -> `0.23.10` | [![age](https://developer.mend.io/api/mc/badges/age/crate/rustls/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/rustls/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/rustls/0.23.8/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/rustls/0.23.8/0.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [strum_macros](https://togithub.com/Peternator7/strum) | `0.26.2` -> `0.26.4` | [![age](https://developer.mend.io/api/mc/badges/age/crate/strum_macros/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/strum_macros/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/strum_macros/0.26.2/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/strum_macros/0.26.2/0.26.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [swc_common](https://togithub.com/swc-project/swc) | `0.33.26` -> `0.34.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/swc_common/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_common/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_common/0.33.26/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_common/0.33.26/0.34.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [swc_ecma_ast](https://togithub.com/swc-project/swc) | `0.113.1` -> `0.115.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/swc_ecma_ast/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_ecma_ast/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_ecma_ast/0.113.4/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_ecma_ast/0.113.4/0.115.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [swc_ecma_parser](https://togithub.com/swc-project/swc) | `0.144.1` -> `0.146.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/swc_ecma_parser/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/swc_ecma_parser/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/swc_ecma_parser/0.144.1/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/swc_ecma_parser/0.144.1/0.146.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [tar](https://togithub.com/alexcrichton/tar-rs) | `0.4.40` -> `0.4.41` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [tar](https://togithub.com/alexcrichton/tar-rs) | `0.4.40` -> `0.4.41` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tar/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tar/0.4.40/0.4.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dev-dependencies | minor | | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | `1.37.0` -> `1.38.0` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tokio/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tokio/1.37.0/1.38.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | minor | | [toml](https://togithub.com/toml-rs/toml) | `0.8.13` -> `0.8.14` | [![age](https://developer.mend.io/api/mc/badges/age/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [toml](https://togithub.com/toml-rs/toml) | `0.8.13` -> `0.8.14` | [![age](https://developer.mend.io/api/mc/badges/age/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/toml/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/toml/0.8.13/0.8.14?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dev-dependencies | patch | | [tracing-opentelemetry](https://togithub.com/tokio-rs/tracing-opentelemetry) | `0.23` -> `0.24` | [![age](https://developer.mend.io/api/mc/badges/age/crate/tracing-opentelemetry/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/tracing-opentelemetry/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/tracing-opentelemetry/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/tracing-opentelemetry/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | [type-fest](https://togithub.com/sindresorhus/type-fest) | [`4.20.0` -> `4.20.1`](https://renovatebot.com/diffs/npm/type-fest/4.20.0/4.20.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/type-fest/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/type-fest/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/type-fest/4.20.0/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/type-fest/4.20.0/4.20.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dev-dependencies | patch | | [url](https://togithub.com/servo/rust-url) | `2.5.0` -> `2.5.1` | [![age](https://developer.mend.io/api/mc/badges/age/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/url/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/url/2.5.0/2.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | workspace.dependencies | patch | | [vite](https://vitejs.dev) ([source](https://togithub.com/vitejs/vite/tree/HEAD/packages/vite)) | [`5.2.13` -> `5.3.1`](https://renovatebot.com/diffs/npm/vite/5.2.13/5.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.2.13/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.2.13/5.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [zip](https://togithub.com/zip-rs/zip2) | `2.1.0` -> `2.1.3` | [![age](https://developer.mend.io/api/mc/badges/age/crate/zip/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/crate/zip/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/crate/zip/2.1.0/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/crate/zip/2.1.0/2.1.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | --- ### Release Notes <details> <summary>apollographql/apollo-client (@​apollo/client)</summary> ### [`v3.10.5`](https://togithub.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#3105) [Compare Source](https://togithub.com/apollographql/apollo-client/compare/v3.10.4...v3.10.5) ##### Patch Changes - [#​11888](https://togithub.com/apollographql/apollo-client/pull/11888) [`7fb7939`](https://togithub.com/apollographql/apollo-client/commit/7fb7939edb7ca8f4273b75554f96ea9936731458) Thanks [@​phryneas](https://togithub.com/phryneas)! - switch `useRenderGuard` to an approach not accessing React's internals - [#​11511](https://togithub.com/apollographql/apollo-client/pull/11511) [`6536369`](https://togithub.com/apollographql/apollo-client/commit/6536369cf213469d20d15b779c344268d70fecd5) Thanks [@​phryneas](https://togithub.com/phryneas)! - `useLoadableQuery`: ensure that `loadQuery` is updated if the ApolloClient instance changes - [#​11860](https://togithub.com/apollographql/apollo-client/pull/11860) [`8740f19`](https://togithub.com/apollographql/apollo-client/commit/8740f198805a99e01136617c4055d611b92cc231) Thanks [@​alessbell](https://togithub.com/alessbell)! - Fixes [#​11849](https://togithub.com/apollographql/apollo-client/issues/11849) by reevaluating `window.fetch` each time `BatchHttpLink` uses it, if not configured via `options.fetch`. Takes the same approach as PR [#​8603](https://togithub.com/apollographql/apollo-client/pull/8603) which fixed the same issue in `HttpLink`. - [#​11852](https://togithub.com/apollographql/apollo-client/pull/11852) [`d502a69`](https://togithub.com/apollographql/apollo-client/commit/d502a69654d8ffa31e09467da028304a934a9874) Thanks [@​phryneas](https://togithub.com/phryneas)! - Fix a bug where calling the `useMutation` `reset` function would point the hook to an outdated `client` reference. - [#​11329](https://togithub.com/apollographql/apollo-client/pull/11329) [`3d164ea`](https://togithub.com/apollographql/apollo-client/commit/3d164ea16c17d271f6fa9e5ad8f013623eec23a0) Thanks [@​PaLy](https://togithub.com/PaLy)! - Fix graphQLErrors in Error Link if networkError.result is an empty string - [#​11852](https://togithub.com/apollographql/apollo-client/pull/11852) [`d502a69`](https://togithub.com/apollographql/apollo-client/commit/d502a69654d8ffa31e09467da028304a934a9874) Thanks [@​phryneas](https://togithub.com/phryneas)! - Prevent writing to a ref in render in `useMutation`. As a result, you might encounter problems in the future if you call the mutation's `execute` function during render. Please note that this was never supported behavior, and we strongly recommend against it. - [#​11848](https://togithub.com/apollographql/apollo-client/pull/11848) [`ad63924`](https://togithub.com/apollographql/apollo-client/commit/ad6392424ddbeb6f91b165c806251490e1cdd69e) Thanks [@​phryneas](https://togithub.com/phryneas)! - Ensure covariant behavior: `MockedResponse<X,Y>` should be assignable to `MockedResponse` - [#​11851](https://togithub.com/apollographql/apollo-client/pull/11851) [`45c47be`](https://togithub.com/apollographql/apollo-client/commit/45c47be26d4e020cfcff359a5af19ccfc39b930e) Thanks [@​phryneas](https://togithub.com/phryneas)! - Avoid usage of useRef in useInternalState to prevent ref access in render. - [#​11877](https://togithub.com/apollographql/apollo-client/pull/11877) [`634d91a`](https://togithub.com/apollographql/apollo-client/commit/634d91aeb10ab308b05d5ffb918678806046af09) Thanks [@​phryneas](https://togithub.com/phryneas)! - Add missing name to tuple member (fix TS5084) - [#​11851](https://togithub.com/apollographql/apollo-client/pull/11851) [`45c47be`](https://togithub.com/apollographql/apollo-client/commit/45c47be26d4e020cfcff359a5af19ccfc39b930e) Thanks [@​phryneas](https://togithub.com/phryneas)! - Fix a bug where `useLazyQuery` would not pick up a client change. </details> <details> <summary>Nullus157/async-compression (async-compression)</summary> ### [`v0.4.11`](https://togithub.com/Nullus157/async-compression/blob/HEAD/CHANGELOG.md#0411---2024-05-30) [Compare Source](https://togithub.com/Nullus157/async-compression/compare/v0.4.10...v0.4.11) ##### Other - Expose total_in/total_out from underlying flate2 encoder types. </details> <details> <summary>async-graphql/async-graphql (async-graphql)</summary> ### [`v7.0.6`](https://togithub.com/async-graphql/async-graphql/blob/HEAD/CHANGELOG.md#706-2024-06-08) - add license files to each project [#​1523](https://togithub.com/async-graphql/async-graphql/issues/1523) - Improve alignment of directive behavior with GraphQL spec [#​1524](https://togithub.com/async-graphql/async-graphql/pull/1524) - dynamic schema: pass default vals to ResolverContext [#​1527](https://togithub.com/async-graphql/async-graphql/pull/1527) - Add [altair](https://togithub.com/altair-graphql/altair) source [#​1530](https://togithub.com/async-graphql/async-graphql/pull/1530) - feat: Add support for using `Interface` and `OneofObject` on the same struct [#​1534](https://togithub.com/async-graphql/async-graphql/pull/1534) </details> <details> <summary>smol-rs/async-lock (async-lock)</summary> ### [`v3.4.0`](https://togithub.com/smol-rs/async-lock/blob/HEAD/CHANGELOG.md#Version-340) [Compare Source](https://togithub.com/smol-rs/async-lock/compare/v3.3.0...v3.4.0) - Port to `event-listener` v5.0.0. ([#​74](https://togithub.com/smol-rs/async-lock/issues/74)) </details> <details> <summary>sdroege/async-tungstenite (async-tungstenite)</summary> ### [`v0.26.1`](https://togithub.com/sdroege/async-tungstenite/blob/HEAD/CHANGELOG.md#0261---2024-06-06) [Compare Source](https://togithub.com/sdroege/async-tungstenite/compare/0.26.0...0.26.1) ##### Added - New `url` feature that maps to the corresponding feature from `tungstenite` and allows connecting directly to `ws` / `wss` URLs. </details> <details> <summary>rust-lang/backtrace-rs (backtrace)</summary> ### [`v0.3.73`](https://togithub.com/rust-lang/backtrace-rs/releases/tag/0.3.73) [Compare Source](https://togithub.com/rust-lang/backtrace-rs/compare/0.3.72...0.3.73) This basically just is bugfixes so that backtrace works on Windows 7 again. #### What's Changed - Fix signature of resolve_legacy for Windows 7 target by [@​aapanfilovv](https://togithub.com/aapanfilovv) in [https://github.com/rust-lang/backtrace-rs/pull/631](https://togithub.com/rust-lang/backtrace-rs/pull/631) - Update some comments by [@​ChrisDenton](https://togithub.com/ChrisDenton) in [https://github.com/rust-lang/backtrace-rs/pull/630](https://togithub.com/rust-lang/backtrace-rs/pull/630) - Update object to 0.36.0. by [@​afranchuk](https://togithub.com/afranchuk) in [https://github.com/rust-lang/backtrace-rs/pull/633](https://togithub.com/rust-lang/backtrace-rs/pull/633) #### New Contributors - [@​aapanfilovv](https://togithub.com/aapanfilovv) made their first contribution in [https://github.com/rust-lang/backtrace-rs/pull/631](https://togithub.com/rust-lang/backtrace-rs/pull/631) - [@​afranchuk](https://togithub.com/afranchuk) made their first contribution in [https://github.com/rust-lang/backtrace-rs/pull/633](https://togithub.com/rust-lang/backtrace-rs/pull/633) **Full Changelog**: https://github.com/rust-lang/backtrace-rs/compare/0.3.72...0.3.73 ### [`v0.3.72`](https://togithub.com/rust-lang/backtrace-rs/releases/tag/0.3.72) [Compare Source](https://togithub.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72) This release removes a lot of dead code. Some feature flags that haven't done anything in a long time are gone. If you depend on those features, Cargo's resolver will not update you to 0.3.72. If your code runs on Windows, or you want it to run on visionOS, however, you should probably update to this version. It contains a number of fixes for both OS. It also uses the latest version of a number of dependencies. #### What's Changed - Revert "Use rustc from stage0 instead of stage0-sysroot (rust-lang/ba… by [@​Nilstrieb](https://togithub.com/Nilstrieb) in [https://github.com/rust-lang/backtrace-rs/pull/603](https://togithub.com/rust-lang/backtrace-rs/pull/603) - Remove dead code by [@​ChrisDenton](https://togithub.com/ChrisDenton) in [https://github.com/rust-lang/backtrace-rs/pull/605](https://togithub.com/rust-lang/backtrace-rs/pull/605) - Fix CI and remove rustc-serialize by [@​ChrisDenton](https://togithub.com/ChrisDenton) in [https://github.com/rust-lang/backtrace-rs/pull/596](https://togithub.com/rust-lang/backtrace-rs/pull/596) - Use correct base address and update comment by [@​ChrisDenton](https://togithub.com/ChrisDenton) in [https://github.com/rust-lang/backtrace-rs/pull/604](https://togithub.com/rust-lang/backtrace-rs/pull/604) - Windows AArch64: Break out of tracing when no longer making progress by [@​dpaoliello](https://togithub.com/dpaoliello) in [https://github.com/rust-lang/backtrace-rs/pull/610](https://togithub.com/rust-lang/backtrace-rs/pull/610) - Remove obsolete rustc-serialize references by [@​atouchet](https://togithub.com/atouchet) in [https://github.com/rust-lang/backtrace-rs/pull/614](https://togithub.com/rust-lang/backtrace-rs/pull/614) - Update `object` and `addr2line` dependencies by [@​a1phyr](https://togithub.com/a1phyr) in [https://github.com/rust-lang/backtrace-rs/pull/612](https://togithub.com/rust-lang/backtrace-rs/pull/612) - Fix tests for rust 1.79 by [@​workingjubilee](https://togithub.com/workingjubilee) in [https://github.com/rust-lang/backtrace-rs/pull/621](https://togithub.com/rust-lang/backtrace-rs/pull/621) - Remove unused `libbacktrace` and `gimli-symbolize` features by [@​Enselic](https://togithub.com/Enselic) in [https://github.com/rust-lang/backtrace-rs/pull/615](https://togithub.com/rust-lang/backtrace-rs/pull/615) - remove some instances of dead_code by [@​klensy](https://togithub.com/klensy) in [https://github.com/rust-lang/backtrace-rs/pull/619](https://togithub.com/rust-lang/backtrace-rs/pull/619) - Reduce panics in dbghelp by [@​ChrisDenton](https://togithub.com/ChrisDenton) in [https://github.com/rust-lang/backtrace-rs/pull/608](https://togithub.com/rust-lang/backtrace-rs/pull/608) - Add Apple visionOS support by [@​QuentinPerez](https://togithub.com/QuentinPerez) in [https://github.com/rust-lang/backtrace-rs/pull/613](https://togithub.com/rust-lang/backtrace-rs/pull/613) - Update cc crate to v1.0.97 by [@​jfgoog](https://togithub.com/jfgoog) in [https://github.com/rust-lang/backtrace-rs/pull/623](https://togithub.com/rust-lang/backtrace-rs/pull/623) - chore: add docs for the global re-entrant lock by [@​Gankra](https://togithub.com/Gankra) in [https://github.com/rust-lang/backtrace-rs/pull/609](https://togithub.com/rust-lang/backtrace-rs/pull/609) - Test with lld-compatible args by [@​workingjubilee](https://togithub.com/workingjubilee) in [https://github.com/rust-lang/backtrace-rs/pull/627](https://togithub.com/rust-lang/backtrace-rs/pull/627) - Bump rustc-demangle version by [@​michaelwoerister](https://togithub.com/michaelwoerister) in [https://github.com/rust-lang/backtrace-rs/pull/624](https://togithub.com/rust-lang/backtrace-rs/pull/624) - cleanup dead_code around cpp_demangle feature by [@​klensy](https://togithub.com/klensy) in [https://github.com/rust-lang/backtrace-rs/pull/622](https://togithub.com/rust-lang/backtrace-rs/pull/622) - Cut backtrace 0.3.72 by [@​workingjubilee](https://togithub.com/workingjubilee) in [https://github.com/rust-lang/backtrace-rs/pull/628](https://togithub.com/rust-lang/backtrace-rs/pull/628) #### New Contributors - [@​Enselic](https://togithub.com/Enselic) made their first contribution in [https://github.com/rust-lang/backtrace-rs/pull/615](https://togithub.com/rust-lang/backtrace-rs/pull/615) - [@​QuentinPerez](https://togithub.com/QuentinPerez) made their first contribution in [https://github.com/rust-lang/backtrace-rs/pull/613](https://togithub.com/rust-lang/backtrace-rs/pull/613) - [@​Gankra](https://togithub.com/Gankra) made their first contribution in [https://github.com/rust-lang/backtrace-rs/pull/609](https://togithub.com/rust-lang/backtrace-rs/pull/609) **Full Changelog**: https://github.com/rust-lang/backtrace-rs/compare/0.3.71...0.3.72 </details> <details> <summary>oven-sh/bun (bun)</summary> ### [`v1.1.13`](https://togithub.com/oven-sh/bun/releases/tag/bun-v1.1.13): Bun v1.1.13 [Compare Source](https://togithub.com/oven-sh/bun/compare/bun-v1.1.12...bun-v1.1.13) To install Bun v1.1.13: ```bash curl -fsSL https://bun.sh/install | bash ### or you can use npm ### npm install -g bun ``` Windows: ```bash powershell -c "irm bun.sh/install.ps1|iex" ``` To upgrade to Bun v1.1.13: ```bash bun upgrade ``` ##### **[Read Bun v1.1.13's release notes on Bun's blog](https://bun.sh/blog/bun-v1.1.13)** ##### Thanks to 11 contributors! - [@​cirospaciari](https://togithub.com/cirospaciari) - [@​deiga](https://togithub.com/deiga) - [@​dylan-conway](https://togithub.com/dylan-conway) - [@​Jarred-Sumner](https://togithub.com/Jarred-Sumner) - [@​LudvigHz](https://togithub.com/LudvigHz) - [@​MARCROCK22](https://togithub.com/MARCROCK22) - [@​nacmartin](https://togithub.com/nacmartin) - [@​nektro](https://togithub.com/nektro) - [@​nithinkjoy-tech](https://togithub.com/nithinkjoy-tech) - [@​paperdave](https://togithub.com/paperdave) - [@​Sushants-Git](https://togithub.com/Sushants-Git) - [@​zackradisic](https://togithub.com/zackradisic) </details> <details> <summary>clap-rs/clap (clap)</summary> ### [`v4.5.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#457---2024-06-10) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.6...v4.5.7) ##### Fixes - Clean up error message when too few arguments for `num_args` ### [`v4.5.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#456---2024-06-06) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.5...v4.5.6) ### [`v4.5.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#455---2024-06-06) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.4...v4.5.5) ##### Fixes - Allow `exclusive` to override `required_unless_present`, `required_unless_present_any`, `required_unless_present_all` </details> <details> <summary>obmarg/cynic (cynic)</summary> ### [`v3.7.3`](https://togithub.com/obmarg/cynic/blob/HEAD/CHANGELOG.md#v373---2024-06-04) [Compare Source](https://togithub.com/obmarg/cynic/compare/v3.7.2...v3.7.3) ##### Changes - update Cargo.toml dependencies - update rust crate trycmd to 0.15 ([#​971](https://togithub.com/obmarg/cynic/pull/971)) </details> <details> <summary>vercel/next.js (eslint-config-next)</summary> ### [`v14.2.4`](https://togithub.com/vercel/next.js/releases/tag/v14.2.4) [Compare Source](https://togithub.com/vercel/next.js/compare/v14.2.3...v14.2.4) > \[!NOTE]\ > This release is backporting bug fixes. It does **not** include all pending features/changes on canary. ##### Core Changes - fix: ensure route handlers properly track dynamic access ([#​66446](https://togithub.com/vercel/next.js/issues/66446)) - fix NextRequest proxy in edge runtime ([#​66551](https://togithub.com/vercel/next.js/issues/66551)) - Fix next/dynamic with babel and src dir ([#​65177](https://togithub.com/vercel/next.js/issues/65177)) - Use vercel deployment url for metadataBase fallbacks ([#​65089](https://togithub.com/vercel/next.js/issues/65089)) - fix(next/image): detect react@19 for fetchPriority prop ([#​65235](https://togithub.com/vercel/next.js/issues/65235)) - Fix loading navigation with metadata and prefetch ([#​66447](https://togithub.com/vercel/next.js/issues/66447)) - prevent duplicate RSC fetch when action redirects ([#​66620](https://togithub.com/vercel/next.js/issues/66620)) - ensure router cache updates reference the latest cache values ([#​66681](https://togithub.com/vercel/next.js/issues/66681)) - Prevent append of trailing slash in cases where path ends with a file extension ([#​66636](https://togithub.com/vercel/next.js/issues/66636)) - Fix inconsistency with 404 getStaticProps cache-control ([#​66674](https://togithub.com/vercel/next.js/issues/66674)) - Use addDependency to track metadata route file changes ([#​66714](https://togithub.com/vercel/next.js/issues/66714)) - Add timeout/retry handling for fetch cache ([#​66652](https://togithub.com/vercel/next.js/issues/66652)) - fix: app-router prefetch crash when an invalid URL is passed to Link ([#​66755](https://togithub.com/vercel/next.js/issues/66755)) ##### Credits Huge thanks to [@​ztanner](https://togithub.com/ztanner), [@​ijjk](https://togithub.com/ijjk), [@​wbinnssmith](https://togithub.com/wbinnssmith), [@​huozhi](https://togithub.com/huozhi), and [@​lubieowoce](https://togithub.com/lubieowoce) for helping! </details> <details> <summary>yoshuawuyts/futures-concurrency (futures-concurrency)</summary> ### [`v7.6.1`](https://togithub.com/yoshuawuyts/futures-concurrency/releases/tag/v7.6.1) [Compare Source](https://togithub.com/yoshuawuyts/futures-concurrency/compare/v7.6.0...v7.6.1) #### What's Changed - Add checks for msrv and semver by [@​matheus-consoli](https://togithub.com/matheus-consoli) in [https://github.com/yoshuawuyts/futures-concurrency/pull/181](https://togithub.com/yoshuawuyts/futures-concurrency/pull/181) - Fix markdown punctuation in documentation of ConcurrentStream::take by [@​dtolnay](https://togithub.com/dtolnay) in [https://github.com/yoshuawuyts/futures-concurrency/pull/186](https://togithub.com/yoshuawuyts/futures-concurrency/pull/186) - Fix pin violation in much of concurrentstream by [@​conradludgate](https://togithub.com/conradludgate) in [https://github.com/yoshuawuyts/futures-concurrency/pull/187](https://togithub.com/yoshuawuyts/futures-concurrency/pull/187) - Add new benchmark for `FutureGroup` by [@​soooch](https://togithub.com/soooch) in [https://github.com/yoshuawuyts/futures-concurrency/pull/179](https://togithub.com/yoshuawuyts/futures-concurrency/pull/179) #### New Contributors - [@​dtolnay](https://togithub.com/dtolnay) made their first contribution in [https://github.com/yoshuawuyts/futures-concurrency/pull/186](https://togithub.com/yoshuawuyts/futures-concurrency/pull/186) - [@​conradludgate](https://togithub.com/conradludgate) made their first contribution in [https://github.com/yoshuawuyts/futures-concurrency/pull/187](https://togithub.com/yoshuawuyts/futures-concurrency/pull/187) - [@​soooch](https://togithub.com/soooch) made their first contribution in [https://github.com/yoshuawuyts/futures-concurrency/pull/179](https://togithub.com/yoshuawuyts/futures-concurrency/pull/179) **Full Changelog**: https://github.com/yoshuawuyts/futures-concurrency/compare/v7.6.0...v7.6.1 </details> <details> <summary>graphql/graphql-js (graphql)</summary> ### [`v16.8.2`](https://togithub.com/graphql/graphql-js/releases/tag/v16.8.2) [Compare Source](https://togithub. </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/grafbase/grafbase). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zOTMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjM5My4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
This benchmark aims to measure latency between futures becoming ready and the stream producing them.
The bench currently shows
FutureGroup
trailing significantly behindFuturesUnordered
for larger test sizes.